
/**
 * @file graphe.h
 * @brief Fichier d'entéte u module graphe;
 *
 * @author Rachid Delory
 */
#ifndef _GRAPHE_
#define _GRAPHE_

/* ********************************************************************* */
/*                                                                       */
/*                        Librairies de graphe                              */
/*                                                                       */
/* ********************************************************************* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "liste.h"
#include "arc.h"
#include "noeud.h"


/* ********************************************************************* */
/*                                                                       */
/*                  Définitions de la structure                          */
/*                                                                       */
/* ********************************************************************* */

/**
 * @struct sGraphe graphe.h
 * @brief Structure utilisée pour la gestion 'un graphe.
 * @var listeNoeud
 * @var listeArc
 */
struct sGraphe {
  Liste * listeNoeud;
  Liste * listeArc;
};
typedef struct sGraphe Graphe;


void initGrapheVide(Graphe * g);
void testamentGraphe(Graphe * g);
int ajoutGrapheNoeud(Graphe * g, char * nom);
int suppressionGrapheNoeudParNom(Graphe * g, char * nom);
int suppressionGrapheNoeudParIndice(Graphe * g, const int indice);
int ajoutGrapheArcParNom(Graphe * g, const int v, const char* nom1, const char* nom2);
int ajoutGrapheArcParIndice(Graphe * g, const int v, const int i, const int j);
void afficheGraphe(Graphe * g);
void Dijkstra(const Graphe * g, const int s);
#endif
